
[dbo].[asi_SeasonalAddress]
CREATE PROCEDURE [dbo].[asi_SeasonalAddress] AS
DECLARE @Now DATETIME
SET @Now = GETDATE()
DECLARE @NotSeasonalInstances INT
DECLARE curSeasonalFullAddress CURSOR FOR
SELECT FullAddressKey,
ReplacesFullAddressKey,
BeginDate,
EndDate,
IsSeasonalAnnually
FROM SeasonalFullAddress
ORDER BY IsSeasonalAnnually DESC, BeginDate ASC
DECLARE @FullAddressKey UNIQUEIDENTIFIER
DECLARE @ReplacesFullAddressKey UNIQUEIDENTIFIER
DECLARE @BeginDate DATETIME
DECLARE @EndDate DATETIME
DECLARE @IsSeasonalAnnually BIT
OPEN curSeasonalFullAddress
FETCH NEXT
FROM curSeasonalFullAddress
INTO @FullAddressKey,
@ReplacesFullAddressKey,
@BeginDate,
@EndDate,
@IsSeasonalAnnually
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@IsSeasonalAnnually = 1)
BEGIN
SET @BeginDate = CAST(CAST(DATEPART(mm, @BeginDate) AS NVARCHAR(2)) + '/' + CAST(DATEPART(dd, @BeginDate) AS NVARCHAR(2)) + '/' + CAST(DATEPART(yyyy, @Now) AS NVARCHAR(4)) AS DATETIME)
SET @EndDate = CAST(CAST(DATEPART(mm, @EndDate) AS NVARCHAR(2)) + '/' + CAST(DATEPART(dd, @EndDate) AS NVARCHAR(2)) + '/' + CAST(DATEPART(yyyy, @Now) AS NVARCHAR(4)) AS DATETIME)
END
IF ( @BeginDate <= @Now AND ( @Now < @EndDate OR @EndDate IS NULL ) )
BEGIN
UPDATE AddressToUse
SET FullAddressKey = @ReplacesFullAddressKey,
SeasonalRevertFullAddressKey = FullAddressKey
WHERE FullAddressKey = @FullAddressKey
END
ELSE
BEGIN
UPDATE AddressToUse
SET FullAddressKey = SeasonalRevertFullAddressKey,
SeasonalRevertFullAddressKey = NULL
WHERE FullAddressKey = @ReplacesFullAddressKey
AND SeasonalRevertFullAddressKey = @FullAddressKey
AND SeasonalRevertFullAddressKey IS NOT NULL
END
FETCH NEXT
FROM curSeasonalFullAddress
INTO @FullAddressKey,
@ReplacesFullAddressKey,
@BeginDate,
@EndDate,
@IsSeasonalAnnually
END
CLOSE curSeasonalFullAddress
DEALLOCATE curSeasonalFullAddress
GO